<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <p>
      同步任务开始<br />
      <br />
      script start<br />
      async1 start<br />
      async2<br />
      script next<br />
      promise1<br />
      script end<br />
      <br />
      同步任务结束<br />
      开始执行微任务队列<br />
      <br />
      async1 end<br />
      promise2<br />
      <br />
      过程中产生的微任务也会执行<br />
      开始执行宏任务队列<br />
      <br />
      setTimeout<br />
    </p>
    <script>
      async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
      }
      async function async2() {
        console.log("async2");
      }

      console.log("script start");

      setTimeout(function () {
        console.log("setTimeout");
      }, 0);

      async1();

      console.log("script next");

      new Promise(function (resolve) {
        console.log("promise1");
        resolve();
      }).then(function () {
        console.log("promise2");
      });
      console.log("script end");
    </script>
  </body>
</html>
